function MError(code, desc, data) {
    this.code = code;
    this.desc = formatStr(desc,data);
    this.data = data;
}
MError.prototype.toString= function () {
    return this.name +"["+this.code+"]["+this.desc+"]";
}
MError.prototype.with= function (data) {
    this.withData = data;
    this.desc = formatStr(this.desc, data);
    return this;
}